n = int(input())
l = list(map(int, input().split()))
a = [[l[i], i + 1] for i in range(n)]
a = [a[0]] + sorted(a[1:], key = lambda a: a[0], reverse = True)
f, t = 0, 1
p = []
while t < n:
if a[f][0] == 0:
t = 0
break
p.append([a[f][1], a[t][1]])
a[f][0] -= 1
t += 1
if a[f][0] == 0:
f += 1
print(t - 1)
if t > 0:
for i in p:
print(i[0], i[1])
892A - Greed | 32A - Reconnaissance |
1236D - Alice and the Doll | 1207B - Square Filling |
1676D - X-Sum | 1679A - AvtoBus |
1549A - Gregor and Cryptography | 918C - The Monster |
4B - Before an Exam | 545B - Equidistant String |
1244C - The Football Season | 1696B - NIT Destroys the Universe |
1674A - Number Transformation | 1244E - Minimizing Difference |
1688A - Cirno's Perfect Bitmasks Classroom | 219A - k-String |
952A - Quirky Quantifiers | 451B - Sort the Array |
1505H - L BREAK into program | 171E - MYSTERIOUS LANGUAGE |
630D - Hexagons | 1690D - Black and White Stripe |
1688D - The Enchanted Forest | 1674C - Infinite Replacement |
712A - Memory and Crow | 1676C - Most Similar Words |
1681A - Game with Cards | 151C - Win or Freeze |
1585A - Life of a Flower | 1662A - Organizing SWERC |